#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstring>
using namespace std;
//class student {
//public:
//	student( int n, const char* na, int s)
//	{
//		no = n;
//		name = new char[strlen(na) + 1];
//		strcpy(name, na);
//		score = s;
//	}
//	student(const student& s)
//	{
//		no = s.no;
//		score = s.score;
//		name = new char[strlen(s.name) + 1];
//		strcpy(name, s.name);
//	}
//	~student()
//	{
//		if (name != NULL)
//			delete[]name;
//	}
//private:
//	int no;
//	char* name;
//	int score;
//};
//
//int main()
//{
//	student s1(1, "weiren", 99);
//	student s2(s1);
//
//	return 0;
//}

//class point {
//private:
//	const int x, y;
//	int c;
//public:
//	point(int xx, int yy,int cc) :x(xx), y(yy),c(cc){};
//	void show()
//	{
//		cout << x << " " << y <<" " <<c<< endl;
//	}
//	void show()const
//	{
//		cout << "const:" << x << " " << y <<" "<<c<< endl;
//	}
//};
//int main()
//{
//	point p1(66, 77,88);
//	const point p2(88, 99,00);
//	p1.show();
//	p2.show();
//}
// 
//class point {
//private:
//	  int x, y;
//public:
//	point(int xx, int yy) :x(xx), y(yy) {};
//	void move(int xo, int yo)
//	{
//		x += xo;
//		y += yo;
//	}
//	void show()
//	{
//		cout << "(" << x << "," << y << ")" << endl;
//	}
//};
//
//int main()
//{
//	const point p1(88,99), p2(1, 2);
//	const point* pp = &p1;
//	point* pp2 = &p2;
//	return 0;
//}

class point {
private:
	int x, y;
public:
	point(int xx, int yy) :x(xx), y(yy) {  };
	void move(int xo, int yo)
	{
		x += xo;
		y += yo;
	}
	void show()const
	{
		cout << "const(" << x << "," << y << ")" << endl;
	}
};
void f1(const point& cpr)
{
	cpr.show();
}

void f2(point &rp)
{
	rp.show();
	rp.move(4, 5);
}

int main()
{
	point p1(66,77), p2(88,99);
	const point cp(44,55);
	point& rp = p1;
	const point& crp = p2;
	const point& pp = cp;
	f1(p1);	f1(cp);	f1(rp);	f1(crp); f1(pp);
	f2(p1); f2(rp); f2(p2);// f2(pp);
	return 0;
}